-- coroutine.resume()
-- 调用resume，将协同程序唤醒,resume操作成功返回true，否则返回false；
-- 返回值：包含一个状态值，yield方法的参数值（有几个参数就resume方法就返回几个值）
-- 参数：第一个参数是协程对象，后面的参数作为yield方法的返回值（有几个参数，yield方法就返回几值）

function foo(a)
    print("foo函数输出", a)
    return coroutine.yield(2 * a)
end

co = coroutine.create(function(a, b)
    print("第一次协同程序执行输出", a, b)

    local r = foo(a + 1)
    print("第二次协同程序执行输出", r)

    local r, s = coroutine.yield(a + b, a - b)
    print("第三次协程执行输出", r, s)

    return b, "结束协程"
end)

print("main", coroutine.resume(co, 1, 10))
print("--分割线--")
print("main", coroutine.resume(co, "r"))
print("--分割线--")
print("main", coroutine.resume(co, "x", "y"))
print("--分割线--")
print("main", coroutine.resume(co, "x", "y"))
